if (exports) {
  var fs = require('fs');
  var jsdom = require('jsdom').jsdom;
  var html = fs.readFileSync('./test/index.html', 'utf-8');
  var document = jsdom(html);
  window = document.defaultView;
  var Slideout = require('../');
  var assert = require('better-assert');
}

var doc = window.document;
var beforeopenEvent = false;
var openEvent = false;
var beforecloseEvent = false;
var closeEvent = false;
var slideout = new Slideout({
  'panel': doc.getElementById('panel'),
  'menu': doc.getElementById('menu'),
});

slideout
  .on('beforeopen', function() {
    beforeopenEvent = true;
  })
  .on('open', function() {
    openEvent = true;
  })
  .on('beforeclose', function() {
    beforecloseEvent = true;
  })
  .on('close', function() {
    closeEvent = true;
  });

//describe('Slideout', function () {
//
//it('should be defined.', function () {
//  assert(Slideout !== undefined);
//});
//
//it('should be a function.', function () {
//  assert(typeof Slideout === 'function');
//});
//
//it('should return a new instance.', function () {
//  assert(slideout instanceof Slideout);
//});
//
//describe('should have the following methods:', function () {
//  var methods = [
//    'open',
//    'close',
//    'toggle',
//    'isOpen',
//    '_initTouchEvents',
//    '_translateXTo',
//    '_setTransition',
//    'on',
//    'once',
//    'off',
//    'emit'
//  ];
//  var i = 0;
//  var len = methods.length;
//  for (i; i < len; i += 1) {
//    (function (i) {
//      it('.' + methods[i] + '()', function (done) {
//        assert(typeof slideout[methods[i]] === 'function');
//        done()
//      });
//    }(i));
//  }
//});
//
//describe('should define the following properties:', function () {
//  var properties = [
//    'panel',
//    'menu',
//    '_startOffsetX',
//    '_currentOffsetX',
//    '_opening',
//    '_moved',
//    '_opened',
//    '_easing',
//    '_duration',
//    '_tolerance',
//    '_padding',
//    '_touch',
//    '_side'
//  ];
//  var i = 0;
//  var len = properties.length;
//  for (i; i < len; i += 1) {
//    (function (i) {
//      it('.' + properties[i] + '()', function (done) {
//        assert(slideout[properties[i]] !== undefined);
//        done()
//      });
//    }(i));
//  }
//});
//
//it('should add classnames to panel and menu DOM elements.', function () {
//  assert(slideout.panel.className.search('slideout-panel') !== -1);
//  assert(slideout.panel.className.search('slideout-panel-left') !== -1);
//  assert(slideout.menu.className.search('slideout-menu') !== -1);
//  assert(slideout.menu.className.search('slideout-menu-left') !== -1);
//});
//
//describe('.open()', function () {
//  it('should add "slideout-open" classname to HTML.', function () {
//    assert(doc.documentElement.className.search('slideout-open') === -1);
//    slideout.open();
//    assert(doc.documentElement.className.search('slideout-open') !== -1);
//  });
//
//  it('should translateX the panel to the given padding.', function () {
//    assert(slideout.panel.style.transform === 'translateX(256px)');
//    assert(slideout.panel.style.transition.search(/transform 300ms ease/) !== -1);
//  });
//
//  it('should set _opened to true.', function () {
//    assert(slideout._opened === true);
//  });
//
//  it('should emit "beforeopen" event.', function () {
//    assert(beforeopenEvent === true);
//  });
//
//  it('should emit "open" event.', function (done) {
//    setTimeout(function(){
//      assert(openEvent === true);
//      done();
//    }, 400);
//
//  });
//});
//
//describe('.isOpen()', function () {
//  it('should return true if the slideout is opened.', function () {
//    assert(slideout.isOpen());
//  });
//});
//
//describe('.close()', function () {
//  it('should remove "slideout-open" classname to HTML.', function (done) {
//    assert(doc.documentElement.className.search('slideout-open') !== -1);
//    slideout.close();
//    setTimeout(function(){
//      assert(doc.documentElement.className.search('slideout-open') === -1);
//      done();
//    }, 350);
//
//  });
//
//  it('should translateX the panel to 0.', function () {
//    assert(slideout.panel.style.transform === '');
//    assert(slideout.panel.style.transition === '');
//  });
//
//  it('should set _opened to false.', function () {
//    assert(slideout._opened === false);
//  });
//
//  it('should emit "beforeclose" event.', function () {
//    assert(beforecloseEvent === true);
//  });
//
//  it('should emit "close" event.', function () {
//    assert(closeEvent === true);
//  });
//});
//
//describe('.toggle()', function () {
//  it('should show the slideout if it is not opened.', function (done) {
//    assert(doc.documentElement.className.search('slideout-open') === -1);
//    slideout.toggle();
//    assert(doc.documentElement.className.search('slideout-open') !== -1);
//    slideout.toggle();
//    setTimeout(function(){
//      assert(doc.documentElement.className.search('slideout-open') === -1);
//      done();
//    }, 350);
//  });
//});
//
//describe('.destroy()', function() {
//  it('should destroy the instance internals allowing a new one to be created in it\'s place.', function(){
//    slideout.destroy();
//    slideout = new Slideout({
//      'panel': doc.getElementById('panel'),
//      'menu': doc.getElementById('menu')
//    });
//    slideout.open();
//    setTimeout(function(){ slideout.close(); }, 750);
//  });
//});
//});
